#!/bin/bash

echo "==================================================================="
echo "moparse 后续功能改进完整演示"
echo "==================================================================="
echo ""

# 颜色定义
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

echo -e "${BLUE}=== 1. DOT格式导出功能演示 ===${NC}"
echo ""

echo -e "${YELLOW}1.1 基本DOT导出${NC}"
echo "命令: ./moparse -i test_connection.modb -m top_module --export-dot demo_basic.dot"
./moparse -i test_connection.modb -m top_module --export-dot demo_basic.dot
echo ""

echo -e "${YELLOW}1.2 查看生成的DOT文件内容${NC}"
echo "--- demo_basic.dot (前20行) ---"
head -20 demo_basic.dot
echo "..."
echo ""

if command -v dot &> /dev/null; then
    echo -e "${YELLOW}1.3 生成PNG图片${NC}"
    echo "命令: dot -Tpng demo_basic.dot -o demo_basic.png"
    dot -Tpng demo_basic.dot -o demo_basic.png 2>&1 | grep -v Warning
    if [ -f demo_basic.png ]; then
        echo -e "${GREEN}✓ 成功生成 demo_basic.png${NC}"
        ls -lh demo_basic.png
    fi
    echo ""
    
    echo -e "${YELLOW}1.4 生成SVG矢量图${NC}"
    echo "命令: dot -Tsvg demo_basic.dot -o demo_basic.svg"
    dot -Tsvg demo_basic.dot -o demo_basic.svg 2>&1 | grep -v Warning
    if [ -f demo_basic.svg ]; then
        echo -e "${GREEN}✓ 成功生成 demo_basic.svg${NC}"
        ls -lh demo_basic.svg
    fi
    echo ""
else
    echo -e "${YELLOW}注意: 未安装Graphviz，跳过图片生成${NC}"
    echo "安装方法: sudo apt-get install graphviz"
    echo ""
fi

echo -e "${BLUE}=== 2. 子模块过滤功能演示 ===${NC}"
echo ""

echo -e "${YELLOW}2.1 导出所有子模块的连接${NC}"
echo "命令: ./moparse -i test_pipeline.modb -m top_module --export-dot demo_all.dot"
./moparse -i test_pipeline.modb -m top_module --export-dot demo_all.dot
if [ -f demo_all.dot ]; then
    echo "子模块数量: $(grep -c 'u_sub_' demo_all.dot)"
fi
echo ""

echo -e "${YELLOW}2.2 只导出u_sub_b子模块的连接${NC}"
echo "命令: ./moparse -i test_pipeline.modb -m top_module --export-dot demo_filtered.dot -sf u_sub_b"
./moparse -i test_pipeline.modb -m top_module --export-dot demo_filtered.dot -sf u_sub_b
if [ -f demo_filtered.dot ]; then
    echo "子模块数量: $(grep -c 'u_sub_b' demo_filtered.dot)"
    echo "验证不包含u_sub_a: $(grep -c 'u_sub_a' demo_filtered.dot || echo '0')"
fi
echo ""

if command -v dot &> /dev/null; then
    echo -e "${YELLOW}2.3 对比完整图和过滤图${NC}"
    dot -Tpng demo_all.dot -o demo_all.png 2>&1 | grep -v Warning
    dot -Tpng demo_filtered.dot -o demo_filtered.png 2>&1 | grep -v Warning
    echo "完整图: demo_all.png ($(ls -lh demo_all.png 2>/dev/null | awk '{print $5}'))"
    echo "过滤图: demo_filtered.png ($(ls -lh demo_filtered.png 2>/dev/null | awk '{print $5}'))"
    echo ""
fi

echo -e "${BLUE}=== 3. 连接关系显示功能回顾 ===${NC}"
echo ""

echo -e "${YELLOW}3.1 顶层到子模块连接${NC}"
echo "命令: ./moparse -i test_connection.modb -m top_module --show-connect-top2sub"
./moparse -i test_connection.modb -m top_module --show-connect-top2sub
echo ""

echo -e "${YELLOW}3.2 子模块间连接${NC}"
echo "命令: ./moparse -i test_connection.modb -m top_module --show-connect-sub2sub -sa u_sub_a -sb u_sub_b"
./moparse -i test_connection.modb -m top_module --show-connect-sub2sub -sa u_sub_a -sb u_sub_b
echo ""

echo -e "${BLUE}=== 4. 功能对比总结 ===${NC}"
echo ""

cat << 'EOF'
┌─────────────────────────────────────────────────────────────────┐
│                      功能对比表                                  │
├─────────────────────┬──────────────┬──────────────┬─────────────┤
│ 功能                │ 命令行显示    │ DOT导出      │ 推荐场景    │
├─────────────────────┼──────────────┼──────────────┼─────────────┤
│ 快速查看连接        │ ✓            │ ✗            │ 调试        │
│ 文档生成            │ ✗            │ ✓            │ 文档        │
│ 可视化展示          │ ✗            │ ✓            │ 演示/审查   │
│ 自动化集成          │ ✓            │ ✓            │ CI/CD       │
│ 子模块过滤          │ ✓            │ ✓            │ 大型设计    │
│ 多种输出格式        │ ✗            │ ✓            │ 报告        │
│ 交互式查看          │ ✗            │ ✓(xdot)      │ 探索        │
└─────────────────────┴──────────────┴──────────────┴─────────────┘
EOF

echo ""
echo -e "${BLUE}=== 5. 生成的文件列表 ===${NC}"
echo ""
ls -lh demo_*.{dot,png,svg} 2>/dev/null || echo "没有生成的演示文件"
echo ""

echo -e "${BLUE}=== 6. 使用建议 ===${NC}"
echo ""
cat << 'EOF'
1. 日常调试: 使用命令行显示功能快速查看连接
   ./moparse -i xxx.modb -m moduleName --show-connect-top2sub

2. 设计文档: 使用DOT导出生成高质量图表
   ./moparse -i xxx.modb -m moduleName --export-dot diagram.dot
   dot -Tpng diagram.dot -o diagram.png

3. 复杂设计: 使用子模块过滤聚焦关键部分
   ./moparse -i xxx.modb -m moduleName --export-dot xxx.dot -sf key_module

4. 交互探索: 使用xdot或其他DOT查看器
   xdot diagram.dot

5. CI/CD集成: 自动生成和发布图表
   make visualize && make publish-docs
EOF

echo ""
echo -e "${GREEN}==================================================================="
echo "演示完成！"
echo "===================================================================${NC}"
echo ""

echo "生成的文件可以用以下方式查看："
if command -v xdg-open &> /dev/null; then
    echo "  xdg-open demo_basic.png      # 查看PNG图片"
    echo "  xdot demo_basic.dot          # 交互式查看DOT文件"
elif command -v open &> /dev/null; then
    echo "  open demo_basic.png          # 查看PNG图片"
    echo "  xdot demo_basic.dot          # 交互式查看DOT文件"
fi
echo ""
